package model

import "time"

// Hero 英雄基础信息
type Hero struct {
	ID          uint      `gorm:"primarykey" json:"id"`
	Name        string    `gorm:"type:varchar(32);not null" json:"name"` // 英雄名称
	Description string    `gorm:"type:varchar(256)" json:"description"`  // 英雄描述
	Avatar      string    `gorm:"type:varchar(128)" json:"avatar"`       // 英雄头像
	Rarity      int       `gorm:"type:tinyint;not null" json:"rarity"`   // 稀有度 1:普通 2:稀有 3:史诗 4:传说
	BaseHP      int       `gorm:"not null" json:"base_hp"`               // 基础生命值
	BaseATK     int       `gorm:"not null" json:"base_atk"`              // 基础攻击力
	BaseSpeed   int       `gorm:"not null" json:"base_speed"`            // 基础速度
	Position    int       `gorm:"type:tinyint;not null" json:"position"` // 默认站位 1:前排 2:后排
	Skills      []Skill   `gorm:"foreignKey:HeroID" json:"skills"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

// Skill 技能信息
type Skill struct {
	ID          uint      `gorm:"primarykey" json:"id"`
	HeroID      uint      `gorm:"not null" json:"hero_id"`
	Name        string    `gorm:"type:varchar(32);not null" json:"name"`
	Description string    `gorm:"type:varchar(256)" json:"description"`
	Type        int       `gorm:"type:tinyint;not null" json:"type"`
	CD          int       `gorm:"not null" json:"cd"`
	Target      int       `gorm:"type:tinyint;not null" json:"target"`
	Effects     string    `gorm:"type:json" json:"effects"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

// TableName 指定表名
func (Hero) TableName() string {
	return "heroes" // 使用实际的表名
}
